<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UsuarioClass
 *
 * @author Administrador
 */
include_once '../view/component/MessageClass.php';
require './DataBase.php';

class UsuarioClass {

    //put your code here
    private $nome;
    private $cargo;
    private $cpf;
    private $telefoneFixo;
    private $telefoneCelular;
    private $email;
    private $perfil;
    private $senha;
    private $ativo;

    function __construct($nome, $cargo, $cpf, $telefoneFixo, $telefoneCelular, $email, $perfil) {
        $this->nome = $nome;
        $this->cargo = $cargo;
        $this->cpf = $cpf;
        $this->telefoneFixo = $telefoneFixo;
        $this->telefoneCelular = $telefoneCelular;
        $this->email = $email;
        $this->perfil = $perfil;
        $this->senha = "";
    }

    public function incluir() {

        $this->senha = $this->gerarSenha();
        $atributos = array(
            'nome' => $this->nome,
            'cpf' => $this->cpf,
            'telefone_fixo' => $this->telefoneFixo,
            'telefone_celular' => $this->telefoneCelular,
            'email' => $this->email,
            'senha' => $this->senha,
            'ativo' => "Sim",
            'cod_cargo' => $this->cargo,
            'cod_perfil' => $this->perfil
        );
        $usuario = Usuario::create($atributos);

        return MessageClass::$SUCCESS;
    }

    public function atualizar($id) {
        $atributos = array(
            'nome' => $this->nome,
            'telefone_fixo' => $this->telefoneFixo,
            'telefone_celular' => $this->telefoneCelular,
            'email' => $this->email,
            'cod_cargo' => $this->cargo,
            'cod_perfil' => $this->perfil
        );

        $usuario = Usuario::find($id);
        $usuario->update_attributes($atributos);
        $usuario->save();

        return MessageClass::$SUCCESS;
    }

    public function ativarDesativar($id) {


        $condition = array('conditions' => "cod_usuario=$id");
        $usuario = Usuario::find('all', $condition);
        $usuarioEncontrado = new ArrayIterator($usuario);

        while ($usuarioEncontrado->valid()):
            $this->ativo = $usuarioEncontrado->current()->ativo;
            $usuarioEncontrado->next();
        endwhile;

        if ($this->ativo == "Sim") {
            $this->ativo = "Não";
        } else {
            $this->ativo = "Sim";
        }

        $atributos = array(
            'ativo' => $this->ativo
        );

        $usr = Usuario::find($id);
        $usr->update_attributes($atributos);
        $usr->save();

        return MessageClass::$SUCCESS;
    }

    public static function PESQUISAR($nome = "", $cpf = "") {
        /*
          $db = new DataBaseClass();
          $db->setSPCDB();

          $param="WHERE nome LIKE '%".$nome."%' ";
          $result=$db->executeSQL("SELECT * FROM tb_usuario ".$param);

         * 
         */
        $condition = array('conditions' => "nome LIKE '%" . $nome . "%' AND cpf LIKE '%" . $cpf . "%'");
        $result = Usuario::find('all', $condition);

        return $result;
    }

    private function gerarSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false) {
        // Caracteres de cada tipo
        $lmin = 'abcdefghijklmnopqrstuvwxyz';
        $lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $num = '1234567890';
        $simb = '!@#$%*-';

        // Variáveis internas
        $senha = '';
        $caracteres = '';

        // Agrupamos todos os caracteres que poderão ser utilizados
        $caracteres .= $lmin;
        if ($maiusculas) {
            $caracteres .= $lmai;
        }
        if ($numeros) {
            $caracteres .= $num;
        }
        if ($simbolos) {
            $caracteres .= $simb;
        }
        // Calculamos o total de caracteres possíveis
        $len = strlen($caracteres);

        for ($n = 1; $n <= $tamanho; $n++) {
            // Criamos um número aleatório de 1 até $len para pegar um dos caracteres
            $rand = mt_rand(1, $len);
            // Concatenamos um dos caracteres na variável $senha
            $senha .= $caracteres[$rand - 1];
        }

        return $senha;
    }

    public function getNome() {
        return $this->nome;
    }

    public function getCargo() {
        return $this->cargo;
    }

    public function getCpf() {
        return $this->cpf;
    }

    public function getTelefoneFixo() {
        return $this->telefoneFixo;
    }

    public function getTelefoneCelular() {
        return $this->telefoneCelular;
    }

    public function getPerfil() {
        return $this->perfil;
    }

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function setCargo($cargo) {
        $this->cargo = $cargo;
    }

    public function setCpf($cpf) {
        $this->cpf = $cpf;
    }

    public function setTelefoneFixo($telefoneFixo) {
        $this->telefoneFixo = $telefoneFixo;
    }

    public function setTelefoneCelular($telefoneCelular) {
        $this->telefoneCelular = $telefoneCelular;
    }

    public function getEmail() {
        return $this->email;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function setPerfil($perfil) {
        $this->perfil = $perfil;
    }

}
